/////////////////////////////////////
//Procesador.java (clase principal)
/////////////////////////////////////

package practpl.seis;

import java.io.*;

import org.antlr.runtime.ANTLRFileStream;
import org.antlr.runtime.CharStream;
import org.antlr.runtime.CommonTokenStream;
import org.antlr.runtime.RecognitionException;

public class Procesador6 {

	public static void main(String args[]) throws RecognitionException, IOException {

		try {
			System.out.println("Fichero fuente: " + args[1]);
			CharStream fis = new ANTLRFileStream(args[1]);
			System.out.println("Lexer: " + args[0] + "\n");

			CommonTokenStream tokens = new CommonTokenStream();	
			
			//ANALEX
			if (args[0].equals("Analex")) {
				AnalexLexer analex = new AnalexLexer(fis);
				tokens.setTokenSource(analex);
				AnalexParser anasint = new AnalexParser(tokens);
				anasint.entrada();
			}
			
			//ANALEX para codigos en C
			if (args[0].equals("AnalexC")) {
				AnalexC analexc = new AnalexC(fis);
				tokens.setTokenSource(analexc);
				AnasintC anasintc = new AnasintC(tokens);
				anasintc.entrada();
			}			
			
			//ANALEX para codigos en XML
			if (args[0].equals("AnalexXML")) {
				AnalexXML analexml = new AnalexXML(fis);
				tokens.setTokenSource(analexml);
				AnasintXML anasintxml = new AnasintXML(tokens);
				anasintxml.entrada();
			}	
			
			//ANALEX para GDL
			if (args[0].equals("AnalexGDL")) {
				AnalexGDL analexgdl = new AnalexGDL(fis);
				tokens.setTokenSource(analexgdl);
				AnasintGDL anasintgdl = new AnasintGDL(tokens);
				anasintgdl.entrada();
			}
			
			//ANALEX para ANTLR
			if (args[0].equals("AnalexANTLR")) {
				AnalexANTLR analexantlr = new AnalexANTLR(fis);
				tokens.setTokenSource(analexantlr);
				AnasintANTLR anasintantlr = new AnasintANTLR(tokens);
				anasintantlr.entrada();
			}
		
		} catch(FileNotFoundException fnfe) {
			System.err.println("No se encontró el fichero");
		}
	}		
}